/*Configuración Api Mapas Here*/
nokia.Settings.set("appId","2TgxLAR6cI4cq9FWJkMg");
nokia.Settings.set("authenticationToken","M3xOiwVbij0dIJaB55ULKw");

/*Configuración Api Mapas Here*/
lats=[];
longs=[];
var length;
markers = [];
var route;
var globalRoute;

var modes = [{
	type: "shortest", 
	transportModes: ["car"],
	options: "",
	trafficMode: "disabled"
}];

$(document).ready(function(){

	/*Mapa*/

	var $mapcontainer = $("#map")[0];
	var map =  new nokia.maps.map.Display($mapcontainer, {
		center: [6.238226,-75.585092],
		zoomLevel : 12,
		components:[
			new nokia.maps.map.component.Behavior(),new nokia.maps.map.component.ZoomBar(), new nokia.maps.map.component.TypeSelector(), new nokia.maps.map.component.ScaleBar()]
	});
	var markerLayer = new nokia.maps.map.Container();
	map.objects.add(markerLayer);
	var router = new nokia.maps.routing.Manager();
	var routeLayer = new nokia.maps.map.Container();
	map.objects.add(routeLayer);
	
	
	
	/*Carga Paradas Editar*/
	length=window.app.paradas.length;
	for (var i = 0; i < length; i++) {
  		lats[window.app.paradas[i].Parada.id_parada] = window.app.paradas[i].Parada.latitud;
  		longs[window.app.paradas[i].Parada.id_parada] = window.app.paradas[i].Parada.longitud;
	}
	
	/*Update Router para repintar la ruta en el mapa Arreglar!!*/
	var ultimoWaypointIndex = 0;	
	var updateRoute = function () {
		var waypsize = 0;
		ultimoWaypointIndex = 0;
		if(typeof globalRoute !=="undefined"){
			map.objects.remove(globalRoute);
		}
		if (markers.length > 1) {
			waypoints = new nokia.maps.routing.WaypointParameterList();
			for (var i = 0, j = markers.length; i < j; i++) {
				if(i!=1 && typeof markers[i]!=="undefined"){
					waypoints.addCoordinate(markers[i].marker.coordinate);
					waypsize++;
					ultimoWaypointIndex++;
				}
			}
			if(typeof markers[1]!=="undefined"){
				waypoints.addCoordinate(markers[1].marker.coordinate);
				waypsize++;
			}
			router.clear();
			if(waypsize >= 2){
				router.calculateRoute(waypoints, modes.slice(0));
			}
		}
	};	
	
	/*Crear un marcador para el mapa y almacenarlo en markers*/
	var createWaypointMarker = function (geocoord, index, parada, consecutivo) {
		var marker;
		if(parada){
			marker = new nokia.maps.map.StandardMarker(geocoord, {
				draggable: false,
				visibility: false
			});
		}else{
			marker = new nokia.maps.map.StandardMarker(geocoord, {
				draggable: true,
				visibility: true,
				brush: {
					color: "#F80"
				}
			});
			marker.addListener("dragend", function (evt) {
				updateRoute();
			});
			marker.addListener("longpress", function (evt) {
				markerLayer.objects.remove(markers[index].marker);
				markers.splice(index,1);
				updateRoute();
			});
		}
		
		var markerGral = {
			marker:marker,
			parada:parada,
			consecutivo:consecutivo
		};
		var markerRemovido;

		if (typeof index == "number") {
			markers.splice(index,0,markerGral);
			markerLayer.objects.add(markerGral.marker);
		}
		
		
		return markerGral.marker;
	};
	
	/*Ayuda Usuario*/
	$("#RutaParada1IdParada").attr("disabled", "disabled");
	$("#agregarParadaIntermedia").attr("disabled", "disabled");
	
	/*Cambios en el origen de la ruta*/
	$("#RutaParada0IdParada").change(function(){
		opc = $(this).val();
		if(opc!=""){
			if(typeof markers[0] !== 'undefined'){
				markerLayer.objects.remove(markers[0].marker);
				markers.splice(0,1);
			}
			var start = createWaypointMarker({
				latitude: parseFloat(lats[opc]),
				longitude: parseFloat(longs[opc])
				},0,true,0);
			start.set("visibility", true);
			markers[0].marker.set("text", "1");
			$("#RutaParada1IdParada").removeAttr("disabled");
		}else{
			if(typeof markers[0] !== 'undefined'){
				markerLayer.objects.remove(markers[0].marker);
			}
			markers[0] = undefined;
			for(var z=2;z<markers.length;z++){
				if(typeof markers[z] !== 'undefined'){
					if(markers[z].parada){
						break;
					}else{
						markerLayer.objects.remove(markers[z].marker);
						markers[z] = undefined;
					}
				}
			}
			
			for(var z=markers.length;z>=2;z--){
				if(typeof markers[z] === 'undefined'){
					markers.splice(z,1);
				}
			}
			$("#RutaParada1IdParada").attr("disabled", "disabled");
			$("#agregarParadaIntermedia").attr("disabled", "disabled");
		}
		updateRoute();
		$("#RutaParada1IdParada").change();
	});
	
	/*Cambios Destino Ruta*/
	$("#RutaParada1IdParada").change(function(){
	opc = $(this).val();
		if(opc!=""){
			if(typeof markers[1] !== 'undefined'){
				markerLayer.objects.remove(markers[1].marker);
				markers.splice(1,1);
			}
			var start = createWaypointMarker({
				latitude: parseFloat(lats[opc]),
				longitude: parseFloat(longs[opc])
				},1,true,1);
			start.set("visibility", true);
			start.set("text", "2");
			$("#agregarParadaIntermedia").removeAttr("disabled");
		}else{
			if(typeof markers[1] !== 'undefined'){
				markerLayer.objects.remove(markers[1].marker);
			}
			markers[1] = undefined;
			$("#agregarParadaIntermedia").attr("disabled", "disabled");
		}
		updateRoute();
		for(var z=markers.length;z>=2;z--){
			if(typeof markers[z] === 'undefined'){
				markers.splice(z,1);
			}
		}
	});
	
	/*Ayuda crear waypoints intermedios de ayuda*/
	var routeHoverContext = new nokia.maps.gfx.Graphics();
	routeHoverContext.beginImage(18, 18);
	routeHoverContext.set("fillColor", "#FFF2");
	routeHoverContext.set("strokeColor", "#000");
	routeHoverContext.set("lineWidth", 2);
	routeHoverContext.drawEllipse(1, 1, 14, 14);
	routeHoverContext.fill();
	routeHoverContext.stroke();
	
	var routerHoverMarker = new nokia.maps.map.Marker({
		latitude: 50,
		longitude: 50
	}, {
		icon: new nokia.maps.gfx.GraphicsImage(routeHoverContext.getIDL()),
		visibility: false,
		anchor: new nokia.maps.util.Point(0, 0)
	});
	
	/*Evento cuando se da click en en el circulo de ayuda y ademas se agrega a al mapa*/
	routerHoverMarker.addListener("click", function (evt) {
		var coord = map.pixelToGeo(evt.displayX, evt.displayY);
		var currentWaypoint = route.waypoints[0].mappedPosition;
		var nearestIndex = globalRoute.getNearestIndex(coord);
		var shape = globalRoute.path.asArray();
		var currentWaypointIdx = 0;
		var i;
		
		for (i = 0; i <= ((nearestIndex + 1) * 3); i += 3) {
			if (currentWaypoint.latitude == shape[i] &&
			currentWaypoint.longitude == shape[i + 1]) {
				currentWaypoint = route.waypoints[++currentWaypointIdx].mappedPosition;
			}
		}

		createWaypointMarker(coord,(currentWaypointIdx+1),false,-1);
		
		updateRoute();
	});
	map.objects.add(routerHoverMarker);
	
	
	/*Ruta Calculada Fin*/
	var onRouteCalculated = function (observedRouter, key, value) {
		if (value == "finished") {
			var routes = observedRouter.getRoutes();
			route = routes[0];
			var mapRoute = new nokia.maps.map.Polyline(route.shape, {
				pen: new nokia.maps.util.Pen({
					lineWidth: 6
				}),
				arrows: new nokia.maps.util.Arrows({
					color: "#FFFFFF"
				})
			});
			globalRoute = mapRoute;
			
			mapRoute.addListener("mouseenter", function (evt) {
				var coord = map.pixelToGeo((evt.displayX - 8), (evt.displayY - 8));
				routerHoverMarker.set("coordinate", coord);
				routerHoverMarker.set("visibility", true);
			});
			
			mapRoute.addListener("mouseleave", function (evt) {
				routerHoverMarker.set("visibility", false);
			});
			
			map.objects.add(globalRoute);
		} else if (value == "failed") {
			alert("The routing request failed.");
		}
	};
	var	routerDrag = new nokia.maps.routing.Manager();
	router.addObserver("state", onRouteCalculated);
	
	/*Parada intermedia*/
	$("#agregarParadaIntermedia").click(function(){
		var ordenActual = parseInt($("#ordenParadaDestino").val());
		var selectParada = $("#RutaParada1IdParada").clone();
		var ordenParada = $("#ordenParadaDestino").clone();
		var tipoParada = $("#RutaParada1TipoParada").clone();
		var borrarParada = $("<button id='borrar"+ordenActual+"'> x </button>");
		var arribaParada = $("<button id='arriba"+ordenActual+"'> ↓ </button>");
		var abajoParada = $("<button id='abajo"+ordenActual+"'> ↑ </button>");

		selectParada.attr("id","RutaParada"+ordenActual+"IdParada");
		selectParada.attr("name","data[RutaParada]["+ordenActual+"][id_parada]");
		selectParada.attr("consecutivo",ordenActual);
		arribaParada.attr("consecutivo",ordenActual);
		abajoParada.attr("consecutivo",ordenActual);
		tipoParada.attr("consecutivo",ordenActual);
		ordenParada.attr("consecutivo",ordenActual);
		var consecutivo = ordenActual+1-1;
		ordenParada.attr("id","RutaParada"+ordenActual+"OrdenParada");
		ordenParada.attr("name","data[RutaParada]["+ordenActual+"][orden_ruta]");
		tipoParada.attr("id","RutaParada"+ordenActual+"TipoParada");
		tipoParada.attr("name","data[RutaParada]["+ordenActual+"][tipo_parada]");
		tipoParada.attr("value","intermedia");

		selectParada.change(function(){
			var indexAdecuado = 0;
			var countParadas = 0;
			for(var z=0;z<markers.length;z++){
				if(typeof markers[z] !=='undefined' && markers[z].parada){
					countParadas++;
				}
				if(markers[z].consecutivo == $(this).attr('consecutivo')){
					indexAdecuado = z;
					break;
				}
			}
			if(indexAdecuado==0){
				indexAdecuado = z;
				if(indexAdecuado < 2){
					indexAdecuado =2;
				}
			}

			opc = $(this).val();
			if(opc!=""){
				if(typeof markers[indexAdecuado] !== 'undefined'){
					markerLayer.objects.remove(markers[indexAdecuado].marker);
					markers.splice(indexAdecuado,1);
				}
				var destination = createWaypointMarker({
				latitude: parseFloat(lats[opc]),
				longitude: parseFloat(longs[opc])
				},indexAdecuado,true,consecutivo);
				destination.set("visibility", true);
			}else{			
				if(typeof markers[indexAdecuado]!=="undefined"){
					markerLayer.objects.remove(markers[indexAdecuado].marker);
				}				
				var inicio = false;
				var indexBorrar = 0;
				var longitud = 0;
				for(var z=0;z<markers.length;z++){
					if(inicio){
						if(typeof markers[z]!=="undefined" && !markers[z].parada){
							markerLayer.objects.remove(markers[z].marker);
							if(indexBorrar == 0){
								indexBorrar = z;
							}
							longitud++;
						}
						if(typeof markers[z]!=="undefined" && markers[z].parada){
							break;
						}
					}
					if(indexAdecuado==z && !inicio){
						inicio = true;
					}
				}
				if(indexBorrar > 0 && longitud > 0){
					markers.splice(indexBorrar,longitud);
				}
				markers.splice(indexAdecuado,1);
			}
			updateRoute();
		});
		
		arribaParada.click(function(event){
			event.preventDefault();
			var indexAdecuado = 0;
			var countParadas = 0;
			for(var z=0;z<markers.length;z++){
				if(typeof markers[z] !=='undefined' && markers[z].parada){
					countParadas++;
				}
				if(markers[z].consecutivo == $(this).attr('consecutivo')){
					indexAdecuado = z;
					break;
				}
			}
			if(indexAdecuado==0){
				indexAdecuado = z;
				if(indexAdecuado < 2){
					indexAdecuado =2;
				}
			}
			if(indexAdecuado < markers.length-1){				
				var controlador = false;
				var waDelArray = [];
				for(var z=indexAdecuado+1;z<markers.length;z++){
					if(markers[z].consecutivo == -1){
						waDelArray.push(z);
					}else{
						controlador = true;
						break;
					}
				}
				if(controlador){
					for(var w=0;w<waDelArray.length;w++){
						markerLayer.objects.remove(markers[waDelArray[w]].marker);
						markers.splice(waDelArray[w],1);
					}
					var markerTemp = markers[indexAdecuado+1];
					markers[indexAdecuado+1] = markers[indexAdecuado];
					markers[indexAdecuado] = markerTemp;
					indexAdecuado = $(this).attr('consecutivo');
					var indexSiguiente = $("#RutaParada"+indexAdecuado+"TipoParada").next().next().next().attr('consecutivo');
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada").next());
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada").next());
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada"));
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"OrdenParada"));
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#abajo"+indexAdecuado));
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#arriba"+indexAdecuado));
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#borrar"+indexAdecuado));
					$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"IdParada"));
				}
				
				updateRoute();				
			}
		});
		
		abajoParada.click(function(event){
			event.preventDefault();
			var indexAdecuado = 0;
			var countParadas = 0;
			for(var z=0;z<markers.length;z++){
				if(typeof markers[z] !=='undefined' && markers[z].parada){
					countParadas++;
				}
				if(markers[z].consecutivo == $(this).attr('consecutivo')){
					indexAdecuado = z;
					break;
				}
			}
			if(indexAdecuado==0){
				indexAdecuado = z;
				if(indexAdecuado < 2){
					indexAdecuado =2;
				}
			}
			if(indexAdecuado > 2){
				var controlador = false;
				var waDelArray = [];
				for(var z=indexAdecuado-1;z<markers.length;z--){
					if(z==1){
						break;
					}
					if(markers[z].consecutivo == -1){
						waDelArray.push(z);
					}else{
						controlador = true;
						break;
					}
				}
				if(controlador){
					for(var w=0;w<waDelArray.length;w++){
						markerLayer.objects.remove(markers[waDelArray[w]].marker);
						markers.splice(waDelArray[w],1);
						indexAdecuado = indexAdecuado - 1;
					}
					var markerTemp = markers[indexAdecuado-1];
					markers[indexAdecuado-1] = markers[indexAdecuado];
					markers[indexAdecuado] = markerTemp;
					indexAdecuado = $(this).attr('consecutivo');
					var indexAnterior = $("#RutaParada"+indexAdecuado+"IdParada").prev().prev().prev().attr('consecutivo');
					$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"IdParada"));
					$("#RutaParada"+indexAnterior+"IdParada").before($("#borrar"+indexAdecuado));
					$("#RutaParada"+indexAnterior+"IdParada").before($("#arriba"+indexAdecuado));
					$("#RutaParada"+indexAnterior+"IdParada").before($("#abajo"+indexAdecuado));
					$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"OrdenParada"));
					$("#RutaParada"+indexAdecuado+"TipoParada").next().remove();
					$("#RutaParada"+indexAdecuado+"TipoParada").next().remove();
					$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"TipoParada"));
					$("#RutaParada"+indexAnterior+"IdParada").before('<br/>');
					$("#RutaParada"+indexAnterior+"IdParada").before('<br/>');
				}
				
				updateRoute();
			}
		});
		
		var ordenParadaActual = ordenActual +1-1;
		borrarParada.click(function(){
			event.preventDefault();
			$('#RutaParada'+ordenParadaActual+'IdParada').remove();
			$('#RutaParada'+ordenParadaActual+'OrdenParada').remove();
			$('#RutaParada'+ordenParadaActual+'TipoParada').next().remove();
			$('#RutaParada'+ordenParadaActual+'TipoParada').next().remove();
			$('#RutaParada'+ordenParadaActual+'TipoParada').remove();
			$('#arriba'+ordenParadaActual).remove();
			$('#abajo'+ordenParadaActual).remove();
			var ordenActual=$("#ordenParadaDestino").val();
			ordenActual--;
			$("#ordenParadaDestino").val(ordenActual);
			$(this).remove();
			var indexAdecuado = 0;
			for(var z=0;z<markers.length;z++){
				if(markers[z].consecutivo == ordenParadaActual){
					indexAdecuado = z;
					break;
				}
			}
			if(indexAdecuado != 0){
				markerLayer.objects.remove(markers[indexAdecuado].marker);
				markers.splice(indexAdecuado,1);
			}
			
			updateRoute();
		});
		
		ordenActual++;
		$("#ordenParadaDestino").val(ordenActual);
		$("#contenedor_paradas_intermedias").append(selectParada);
		$("#contenedor_paradas_intermedias").append(borrarParada);
		$("#contenedor_paradas_intermedias").append(arribaParada);
		$("#contenedor_paradas_intermedias").append(abajoParada);
		$("#contenedor_paradas_intermedias").append(ordenParada);
		$("#contenedor_paradas_intermedias").append(tipoParada);
		$("#contenedor_paradas_intermedias").append('<br/>');
		$("#contenedor_paradas_intermedias").append('<br/>');

	});
	
	/*Guardar waypoint ayuda*/
	$( "form" ).submit(function(){
		for(var z=0;z<markers.length;z++){
			if(typeof markers[z]!=="undefined" && !markers[z].parada){
				var wayAyuHtml = "<input type='hidden' name='wa"+z+"' id='wa"+z+"' value='"+markers[z].marker.coordinate.latitude+"|"+markers[z].marker.coordinate.longitude+"|"+z+"' />"
				$("#waypointsAyuda").append(wayAyuHtml);
			}
		}
	});
	
	/*Editar*/
	$("#RutaParada0IdParada").change();
	$("#RutaParada1IdParada").change();
	
	
	/*Select Paradas Intermedias Editar Agregar Evento*/
	$("#contenedor_paradas_intermedias").children("select").each(function(key,value){
	var ordenEditar = key+2;
	$(this).change(function(){
			var indexAdecuado = 0;
			var countParadas = 0;
			for(var z=0;z<markers.length;z++){
				if(typeof markers[z] !=='undefined' && markers[z].parada){
					countParadas++;
				}
				if(countParadas==ordenEditar){
					indexAdecuado = z+1;
					break;
				}
			}
			if(indexAdecuado==0){
				indexAdecuado = z;
				if(indexAdecuado < 2){
					indexAdecuado =2;
				}
			}
			
			opc = $(this).val();
			if(opc!=""){
				if(typeof markers[indexAdecuado] !== 'undefined'){
					markerLayer.objects.remove(markers[indexAdecuado].marker);
					markers.splice(indexAdecuado,1);
				}
				var destination = createWaypointMarker({
				latitude: parseFloat(lats[opc]),
				longitude: parseFloat(longs[opc])
				},indexAdecuado,true,ordenEditar);
				destination.set("visibility", true);
			}else{
				if(typeof markers[indexAdecuado]!=="undefined"){
					markerLayer.objects.remove(markers[indexAdecuado].marker);
				}
				var inicio = false;
				var indexBorrar = 0;
				var longitud = 0;
				for(var z=0;z<markers.length;z++){
					if(inicio){
						if(typeof markers[z]!=="undefined" && !markers[z].parada){
							markerLayer.objects.remove(markers[z].marker);
							if(indexBorrar == 0){
								indexBorrar = z;
							}
							longitud++;
						}
						if(typeof markers[z]!=="undefined" && markers[z].parada){
							break;
						}
					}
					if(indexAdecuado==z && !inicio){
						inicio = true;
					}
				}
				if(indexBorrar > 0 && longitud > 0){
					markers.splice(indexBorrar,longitud);
				}
				markers.splice(indexAdecuado,1);
			}
			updateRoute();
		});
		$(this).change();
	});
	
	$("#contenedor_paradas_intermedias").children("button").each(function(key,value){
		if($(value).attr('id').indexOf("borrar") != -1){
			$(value).click(function(event){
				event.preventDefault();
				var ordenParadaActual = $(this).attr('consecutivo');
				$('#RutaParada'+ordenParadaActual+'IdParada').remove();
				$('#RutaParada'+ordenParadaActual+'OrdenParada').remove();
				$('#RutaParada'+ordenParadaActual+'TipoParada').next().remove();
				$('#RutaParada'+ordenParadaActual+'TipoParada').next().remove();
				$('#RutaParada'+ordenParadaActual+'TipoParada').remove();
				$('#arriba'+ordenParadaActual).remove();
				$('#abajo'+ordenParadaActual).remove();
				var ordenActual=$("#ordenParadaDestino").val();
				ordenActual--;
				$("#ordenParadaDestino").val(ordenActual);
				$(this).remove();
				var indexAdecuado = 0;
				for(var z=0;z<markers.length;z++){
					if(markers[z].consecutivo == ordenParadaActual){
						indexAdecuado = z;
						break;
					}
				}
				if(indexAdecuado != 0){
					markerLayer.objects.remove(markers[indexAdecuado].marker);
					markers.splice(indexAdecuado,1);
				}
				
				updateRoute();	
			});
		}
		if($(value).attr('id').indexOf("arriba") != -1){
			$(value).click(function(event){
				event.preventDefault();
				var indexAdecuado = 0;
				var countParadas = 0;
				for(var z=0;z<markers.length;z++){
					if(typeof markers[z] !=='undefined' && markers[z].parada){
						countParadas++;
					}
					if(markers[z].consecutivo == $(this).attr('consecutivo')){
						indexAdecuado = z;
						break;
					}
				}
				if(indexAdecuado==0){
					indexAdecuado = z;
					if(indexAdecuado < 2){
						indexAdecuado =2;
					}
				}
				if(indexAdecuado < markers.length-1){				
					var controlador = false;
					var waDelArray = [];
					for(var z=indexAdecuado+1;z<markers.length;z++){
						if(markers[z].consecutivo == -1){
							waDelArray.push(z);
						}else{
							controlador = true;
							break;
						}
					}
					if(controlador){
						for(var w=0;w<waDelArray.length;w++){
							markerLayer.objects.remove(markers[waDelArray[w]].marker);
							markers.splice(waDelArray[w],1);
						}
						var markerTemp = markers[indexAdecuado+1];
						markers[indexAdecuado+1] = markers[indexAdecuado];
						markers[indexAdecuado] = markerTemp;
						indexAdecuado = $(this).attr('consecutivo');
						var indexSiguiente = $("#RutaParada"+indexAdecuado+"TipoParada").next().next().next().attr('consecutivo');
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada").next());
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada").next());
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"TipoParada"));
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"OrdenParada"));
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#abajo"+indexAdecuado));
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#arriba"+indexAdecuado));
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#borrar"+indexAdecuado));
						$("#RutaParada"+indexSiguiente+"TipoParada").next().next().after($("#RutaParada"+indexAdecuado+"IdParada"));
					}
					
					updateRoute();				
				}
			});
		}
		if($(value).attr('id').indexOf("abajo") != -1){
			$(value).click(function(event){
				event.preventDefault();
				var indexAdecuado = 0;
				var countParadas = 0;
				for(var z=0;z<markers.length;z++){
					if(typeof markers[z] !=='undefined' && markers[z].parada){
						countParadas++;
					}
					if(markers[z].consecutivo == $(this).attr('consecutivo')){
						indexAdecuado = z;
						break;
					}
				}
				if(indexAdecuado==0){
					indexAdecuado = z;
					if(indexAdecuado < 2){
						indexAdecuado =2;
					}
				}
				if(indexAdecuado > 2){
					var controlador = false;
					var waDelArray = [];
					for(var z=indexAdecuado-1;z<markers.length;z--){
						if(z==1){
							break;
						}
						if(markers[z].consecutivo == -1){
							waDelArray.push(z);
						}else{
							controlador = true;
							break;
						}
					}
					if(controlador){
						for(var w=0;w<waDelArray.length;w++){
							markerLayer.objects.remove(markers[waDelArray[w]].marker);
							markers.splice(waDelArray[w],1);
							indexAdecuado = indexAdecuado - 1;
						}
						var markerTemp = markers[indexAdecuado-1];
						markers[indexAdecuado-1] = markers[indexAdecuado];
						markers[indexAdecuado] = markerTemp;
						indexAdecuado = $(this).attr('consecutivo');
						var indexAnterior = $("#RutaParada"+indexAdecuado+"IdParada").prev().prev().prev().attr('consecutivo');
						$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"IdParada"));
						$("#RutaParada"+indexAnterior+"IdParada").before($("#borrar"+indexAdecuado));
						$("#RutaParada"+indexAnterior+"IdParada").before($("#arriba"+indexAdecuado));
						$("#RutaParada"+indexAnterior+"IdParada").before($("#abajo"+indexAdecuado));
						$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"OrdenParada"));
						$("#RutaParada"+indexAdecuado+"TipoParada").next().remove();
						$("#RutaParada"+indexAdecuado+"TipoParada").next().remove();
						$("#RutaParada"+indexAnterior+"IdParada").before($("#RutaParada"+indexAdecuado+"TipoParada"));
						$("#RutaParada"+indexAnterior+"IdParada").before('<br/>');
						$("#RutaParada"+indexAnterior+"IdParada").before('<br/>');
					}
					
					updateRoute();
				}
			});
		}
	});
	
	/*Cargar los WA ayuda para el editar*/
	if(typeof window.app.wayayuda !=="undefined"){
		$.each(window.app.wayayuda,function(key,value){
			var coordWA = new nokia.maps.geo.Coordinate(parseFloat(value.WaypointAyuda.latitud),parseFloat(value.WaypointAyuda.longitud))
			var waeditId = parseInt(value.WaypointAyuda.id_waypoint_parada);
			createWaypointMarker(coordWA,waeditId,false,-1);
		});
		updateRoute();
	}
});